﻿Imports System.Text

Public Class frmCNH
    Inherits formPadrao


    Dim Sep As Char = ","
    Dim Nombre As Double
    Public WithEvents ucPreambulo As New ucPreambulo
    Private nomeDiretorio As String = Nothing
    Public WithEvents btnLimpar As System.Windows.Forms.Button
    Private registro As New registroVO
    Private mensagem As String
    Private erroNivel As Integer = 0
    Private regInserido As New registroVO

    ' Public _ehCnhFalsa As Boolean = Nothing
    'Public Property EHCNHFALSA() As Boolean
    '    Get
    '        Return _ehCnhFalsa
    '    End Get
    '    Set(value As Boolean)
    '        _ehCnhFalsa = value
    '    End Set
    'End Property

    Public Property getUcPreambulo() As ucPreambulo

        Get
            Return ucPreambulo

        End Get

        Set(ByVal value As ucPreambulo)
            ucPreambulo = value

        End Set

    End Property


    Public Sub New()
        ' This call is required by the designer.
        InitializeComponent()
        pnlDados.Controls.Add(ucPreambulo)
        If Not DesignMode Then
            Sep = Application.CurrentCulture.NumberFormat.NumberDecimalSeparator
            pnlDados.AutoSize = True
        End If
    End Sub

    Private Sub TextboxNumeric_KeyPress(ByVal sender As Object, ByVal e As KeyPressEventArgs)
        Dim nonNumberEntered As Boolean
        nonNumberEntered = True

        If (e.KeyChar >= Convert.ToChar(48) AndAlso e.KeyChar <= Convert.ToChar(57)) OrElse e.KeyChar = Convert.ToChar(8) OrElse e.KeyChar = Convert.ToChar(44) Then
            nonNumberEntered = False
        End If
        If nonNumberEntered = True Then
            e.Handled = True
        Else
            e.Handled = False
        End If
    End Sub


    Private Sub frmAvaliacao_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Try
            Me.WindowState = FormWindowState.Maximized
            generica.redimensionaControle(pnlDados)
            generica.redimensionaControle(pnlItens)
            ucPreambulo.ucPerito.Enabled = True
            ucPreambulo.selecionaIdTipoPericia = 3

            ucPreambulo.selecionaIdNatureza = ucPreambulo.ID_NATUREZA

            ucPreambulo.pnlNatureza.Enabled = False
            Me.ControlBox = False
            ucPreambulo.getVitima = "A fé pública"
            cmbCategoria.SelectedIndex = 0
            cmbDetran.SelectedIndex = 0
            cmbGrafica.SelectedIndex = 0

            If ucPreambulo.ID_NATUREZA = 13 Then
                ucPreambulo.lblTitulo.Text = "ANÁLISE DOCUMENTOSCÓPICA DE CNH FALSA"
            ElseIf ucPreambulo.ID_NATUREZA = 12 Then
                ucPreambulo.lblTitulo.Text = "ANÁLISE DOCUMENTOSCÓPICA DE ALTERAÇÃO DOCUMENTAL DE CNH"
            End If
        Catch ex As Exception
            generica.gravaErro(ex)
        End Try
    End Sub
    '--------------------------------------------------------------------------------------------------------------------------------
    ' FUNÇÃO QUE IRÁ GERAR O LAUDO
    '--------------------------------------------------------------------------------------------------------------------------------
    Private Sub geraLaudo()

        Dim regBO As New registroBO
        generica.tempo = Now
        Dim oWordTemp As New WordAppl
        Dim registroBo As New registroBO
        
        '-----------------------------------------------------------------------------------------
        ' ABRE O ARQUIVO WORD
        '-----------------------------------------------------------------------------------------

        If registroGlobal.registroPincipal.ID_REGISTRO > 0 Or ucPreambulo.ehNovo Then

            pb.zeraContador()
            pb.stepBarra(10)
            pb.Visible = True
            pb.stepBarra(10)

            '-----------------------------------------------------------------------------------------
            ' GRAVA REGISTRO NA BASE DE DADOS
            '-----------------------------------------------------------------------------------------
            pb.stepBarra(10)
            Try
                If generica.gravaBanco Then

                    '------------------------------------------------------------------------------------
                    ' VERFICA SE É UM NOVO REGISTRO OU SE É UM REGISTRO JÁ ARMAZENADO NA BASE DE DADOS
                    '------------------------------------------------------------------------------------
                    pb.stepBarra(10)
                    Dim textoProva As String = String.Empty
                    Dim provas As New StringBuilder

                    provas.Append("CNH n°:").Append(txtRegistro.Text).Append(",formulário n° :").Append(txtImpresso.Text)
                    provas.Append(",nome do portador:").Append(txtPortador.Text).Append(",DETRAN:").Append(cmbDetran.SelectedItem)
                    provas.Append(",Categoria:").Append(cmbCategoria.SelectedItem)

                    If provas.ToString.Length > 250 Then
                        textoProva = provas.ToString.Substring(0, 250)
                    Else
                        textoProva = provas.ToString
                    End If

                    Dim registroGravado As Integer

                    If registroGlobal.registroPincipal.ID_REGISTRO > 0 And registroGlobal.registroPincipal.GEROULAUDO = False Then
                        '-----------------------------------------------------------------------------------------
                        nomeDiretorio = generica.retornaNomeDiretorio(ucPreambulo.getAno, _
                                                                  ucPreambulo.getNumeroLaudo, "DOCUMENTOSCOPIA CNH ", ucPreambulo.getIndiciado, ucPreambulo.getVitima)
                        '-----------------------------------------------------------------------------------------
                        registroGravado = regBO.updateRegistro(registroGlobal.registroPincipal, _
                                                              textoProva, ucPreambulo.getIdPeritoSelecionado, _
                                                               nomeDiretorio, ucPreambulo)
                        pb.stepBarra(10)
                        mensagem = (" O laudo n°" & registroGravado & " foi atualizado com sucesso na base de dados. Clique no ícone do WORD para visualizar o laudo.")
                        registroGlobal.registroPincipal = registroBo.getRegistroSimplificado(registroGravado, ucPreambulo.getAno)
                    Else

                        Dim reg As New registroVO

                        Dim ultimo As Integer = regBO.getUltimoRegistro
                        Dim registroTemporario As Integer = 0
                        If ultimo <> ucPreambulo.getNumeroLaudo Then
                            registroTemporario = ucPreambulo.getNumeroLaudo
                            ucPreambulo.getNumeroLaudo = ultimo
                        End If

                        '-----------------------------------------------------------------------------------------
                        nomeDiretorio = generica.retornaNomeDiretorio(ucPreambulo.getAno, _
                                                                  ucPreambulo.getNumeroLaudo, "DOCUMENTOSCOPIA CNH ", ucPreambulo.getIndiciado, ucPreambulo.getVitima)
                        '-----------------------------------------------------------------------------------------

                        reg = generica.populaRegistro(ucPreambulo, generica.retornaNomeArquivoCompleto(nomeDiretorio & ".doc", nomeDiretorio), textoProva)
                        registroGravado = regBO.insereRegistro(reg)
                        registroGlobal.registroPincipal = registroBo.getRegistroSimplificado(registroGravado, ucPreambulo.getAno)
                        If registroTemporario = 0 Then
                            mensagem = (" O laudo n°" & registroGlobal.registroPincipal.NUM_REGISTRO & " foi inserido com sucesso na base de dados. Clique no ícone do WORD para visualizar o laudo.")
                        Else
                            mensagem = (" O laudo n°" & ultimo & " foi inserido com sucesso na base de dados. O laudo não foi gravado com o número inicial " & registroTemporario & " pelo fato de outro usuário ter inserido este número de laudo no banco de dados. Clique no ícone do WORD para visualizar o laudo.")
                        End If
                        pb.stepBarra(10)
                    End If


                    '------------------------------------------------------------------------------------
                    ' INSERE DADOS NA TABELA PONTUACAO
                    '------------------------------------------------------------------------------------
                    Dim pontuacaobo As New pontuacaoBO
                    Dim pontuacao As New pontuacaoVO
                    Dim i As Integer

                    If ucPreambulo.ehNovo Then
                        With pontuacao
                            .USUARIO = New usuarioVO With {.ID_USUARIO = ucPreambulo.getIdPeritoSelecionado}
                            .REGISTRO = New registroVO With {.ID_REGISTRO = registroGlobal.registroPincipal.ID_REGISTRO}
                            .PONTUACAO = registroGlobal.registroPincipal.NATUREZA.PONTOS_ATENDIMENTO
                            .TIPO_OCORRENCIA = "ATENDIMENTO"
                            .DATA_ALTERACAO = Nothing
                        End With

                        i = pontuacaobo.inserePontuacao(pontuacao)

                    Else
                        i = pontuacaobo.upDatePontuacao(ucPreambulo.getIdPeritoSelecionado, registroGlobal.registroPincipal)
                    End If

                Else
                    mensagem = ("O sistema está configurado para não gravar registros na base de dados do sistema de registro eletrônico. Para habilitar, clique em configurações > Configurar aplicação e marque a opção <<SIM>>>. Apenas o laudo de n° " & ucPreambulo.getNumeroLaudo & " será gerado. Clique no ícono do WORD para visualizar o documento.")
                End If
                '-------------------------------------------------------------------------------------
                ' INSERE DADOS ITENS DA TABELA NA BASE LOCAL
                '-------------------------------------------------------------------------------------


            Catch ex As Exception
                habilita(False, , False)
                generica.encerraProcessosWord()
                generica.gravaErro(ex)
                erroNivel = 1
                Exit Sub
            End Try

            Try

                Dim diretorio As String = System.Configuration.ConfigurationManager.AppSettings("dirTemplateword")

                If ucPreambulo.ID_NATUREZA = 13 Then
                    oWordTemp.OpenModelo("cnhFalsa.dot")
                ElseIf ucPreambulo.ID_NATUREZA = 12 Then
                    oWordTemp.OpenModelo("CNHAutenticaDadosFalsos.dot")
                End If
                oWordTemp.SaveAs(nomeDiretorio, nomeDiretorio & ".doc")
                oWordTemp.Quit()
                oWordTemp = Nothing

                '------------------------------------------------------------------------------------------------
                ' CRIA O PREMABULO
                '------------------------------------------------------------------------------------------------
                Dim oWord As New WordAppl
                oWord.Open(nomeDiretorio, nomeDiretorio & ".doc")
                oWord.criaPreambulo(ucPreambulo)
                '------------------------------------------------------------------------------------------------
                ' POPULA DOCUMENTO WORD
                '------------------------------------------------------------------------------------------------

                pb.stepBarra(10)
                oWord.FindAndReplacement("<<DETRAN>>", cmbDetran.SelectedItem)
                oWord.FindAndReplacement("<<impresso>>", txtImpresso.Text)
                oWord.FindAndReplacement("<<portador>>", txtPortador.Text)
                oWord.FindAndReplacement("<<categoria>>", cmbCategoria.SelectedItem)
                oWord.FindAndReplacement("<<registro>>", txtRegistro.Text)
                oWord.FindAndReplacement("<<nascimento>>", txtDataNasc.Text)
                oWord.FindAndReplacement("<<primeira>>", txtPrimeira.Text)
                oWord.FindAndReplacement("<<dataExpedicao>>", txtDataEmissao.Text)
                oWord.FindAndReplacement("<<dataSaude>>", txtValidade.Text)
                oWord.FindAndReplacement("<<grafica>>", cmbGrafica.Text)
                oWord.criaAssinatura(ucPreambulo)
                oWord.Save()
                oWord.Quit()
                pb.stepBarra(10)

                '-----------------------------------------------------------------------------------------------------------------------
                ' CHAMA ROTINA PARA LIMPAR CAMPOS DO CONTROLE E DO DATAGRID VIEW
                '-----------------------------------------------------------------------------------------------------------------------

            Catch exc As Exception
                generica.encerraProcessosWord()
                generica.gravaErro(exc)
                erroNivel = 2
                Exit Sub
            End Try
        Else

            '----------------------------------------------------------------------------------------------------------------------------
            ' CASO SEJA UM ARQUIVO QUE JÁ SE ENCONTRA CADASTRADO NA BASE DE DADOS
            '----------------------------------------------------------------------------------------------------------------------------
            If registroGlobal.registroPincipal.ID_REGISTRO > 0 And registroGlobal.registroPincipal.GEROULAUDO Then
                habilita(False)
                mensagem = ("O laudo n° " & ucPreambulo.getNumeroLaudo & "/" & ucPreambulo.getAno & " já existe registrado na base de dados.Clique no ícone do WORD para visualizar o laudo.")
            Else
                mensagem = ("O laudo n° " & ucPreambulo.getNumeroLaudo & "/" & ucPreambulo.getAno & " não foi encontrado na base de dados.")
            End If
        End If
        MsgBox(mensagem)
    End Sub

    Private Sub habilita(ByVal habilita As Boolean, _
                         Optional ByVal habilitaBarra As Boolean = Nothing, _
                         Optional ByVal habilitaVerWord As Boolean = Nothing, _
                        Optional ByVal vergrupoCNH As Boolean = Nothing, _
                               Optional ByVal habilitaGrupoCNH As Boolean = Nothing, _
                               Optional ByVal habilitaUCNatureza As Boolean = Nothing)




        If Not IsNothing(habilitaVerWord) Then
            ucPreambulo.btnVerWord.Visible = habilitaVerWord
        Else
            ucPreambulo.btnVerWord.Visible = Not habilita
        End If

        If Not IsNothing(vergrupoCNH) Then
            grpDrogas.Visible = vergrupoCNH
        Else
            grpDrogas.Visible = vergrupoCNH
        End If

        If Not IsNothing(habilitaGrupoCNH) Then
            grpDrogas.Enabled = habilitaGrupoCNH
        Else
            grpDrogas.Enabled = habilitaGrupoCNH
        End If

        'If ucPreambulo.ehNovo Then

        '    grpDrogas.Visible = True
        'Else
        '    grpDrogas.Visible = False

        'End If

        ucPreambulo.btnGeraLaudo.Enabled = habilita
        ucPreambulo.habilitaCampos(habilita)
        ucPreambulo.selecionaIdTipoPericia = 3
        ucPreambulo.selecionaIdNatureza = ucPreambulo.ID_NATUREZA
        If Not IsNothing(habilitaUCNatureza) Then
            ucPreambulo.pnlNatureza.Enabled = habilitaUCNatureza
        End If

        'grpDrogas.Visible = habilita

        If Not IsNothing(habilitaBarra) Then
            pb.Visible = habilitaBarra
            pb.zeraContador()
        End If
    End Sub

    Private Sub btnGerarLaudo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Dim isOk As Boolean = False
        Try
            If (generica.validaCampos(ucPreambulo)) Then
                geraLaudo()
            End If
        Catch ex As Exception
            generica.gravaErro(ex)
        End Try
    End Sub

    Private Sub btnLimpa_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Try
            ucPreambulo.limparCampos()
        Catch ex As Exception
            generica.gravaErro(ex)
        End Try
    End Sub

    Private Sub btnWord_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Try
            If registroGlobal.registroPincipal.NUM_REGISTRO > 0 And registroGlobal.registroPincipal.GEROULAUDO Then
                generica.visualizaWord(nomeDiretorio, nomeDiretorio & ".doc")
            Else
                generica.visualizaWord(nomeDiretorio, nomeDiretorio & ".doc")
            End If
        Catch ex As Exception
            generica.gravaErro(ex)
        End Try
    End Sub

    Private Sub chamaEventoLimpaCampos(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ucPreambulo.onClickLimpaCampos
        Try
            generica.limpaControle(grpDrogas)
            limpaCNH(grpDrogas)
            ucPreambulo.populaDados()
            habilita(True, False, False, True, True, False)

        Catch ex As Exception
            generica.gravaErro(ex)
        End Try
    End Sub
    Private Sub chamaEventoGeraLaudo(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ucPreambulo.onClickGeraLaudo
        Try
            For Each controle In grpDrogas.Controls
                erro.SetError(controle, String.Empty)

                'COPIAR ESTE TRECHO
                Dim regBO As New registroBO
                Dim registroVOTemp As New registroVO
                Dim novoRegistro As Integer = 0
                registroVOTemp = regBO.getRegistroSimplificado(ucPreambulo.getNumeroLaudo, ucPreambulo.getAno)

                If registroVOTemp.NUM_REGISTRO > 0 And registroVOTemp.GEROULAUDO And ucPreambulo.ehNovo Then
                    novoRegistro = regBO.getUltimoRegistro
                    MsgBox("Laundo n° " & registroVOTemp.NUM_REGISTRO & " já foi inserido na base de dados por outro usuário logado no sistema. O laudo será gerado com o número " & novoRegistro)
                    ucPreambulo.getNumeroLaudo = novoRegistro

                ElseIf registroVOTemp.NUM_REGISTRO > 0 And registroVOTemp.GEROULAUDO Then
                    MsgBox("Laundo n° " & registroVOTemp.NUM_REGISTRO & " já foi atualizado na base de dados por outro usuário logado no sistema.")
                    Exit Sub
                End If

                'FIM DO TRECHO

            Next
            If (generica.validaCampos(ucPreambulo)) Then
                If validaCampos() Then
                    pb.zeraContador()
                    pb.stepBarra(10)
                    pb.Visible = True
                    generica.salvaPreambulo(ucPreambulo)
                    geraLaudo()
                    If erroNivel > 0 Then
                        If generica.rollBack(registroGlobal.registroPincipal, nomeDiretorio, erroNivel, ucPreambulo.ehNovo, ucPreambulo) Then

                            MsgBox("O sistema recuperou de um erro grave e nenhuma informação foi gravada. Para registrar um novo laudo, clique em novo laudo")
                            erroNivel = 0
                            ucPreambulo.btnLimpaCampos.PerformClick()
                        End If
                    Else
                        ucPreambulo.txtDataEntrada.Enabled = False
                        habilita(False, False, True, True, False, False)
                    End If
                End If
            End If
        Catch ex As Exception
            generica.gravaErro(ex)
        End Try
    End Sub

    Private Function validaCampos() As Boolean

        Dim ok As Boolean = False

        Try
            If txtPortador.Text.Equals(String.Empty) Then

                erro.SetError(txtPortador, "Campo obrigatório")
                txtPortador.Focus()
                Exit Try
            ElseIf txtImpresso.Text.Equals(String.Empty) Then
                erro.SetError(txtImpresso, "Campo obrigatório")
                txtImpresso.Focus()
                Exit Try
            ElseIf txtRegistro.Text.Equals(String.Empty) Then
                erro.SetError(txtRegistro, "Campo obrigatório")
                txtRegistro.Focus()

            ElseIf txtDataNasc.Text.Equals(String.Empty) Then
                erro.SetError(txtDataNasc, "Campo obrigatório")
                txtDataNasc.Focus()

            ElseIf Not IsDate(txtDataNasc.Text) Then
                erro.SetError(txtDataNasc, "Formato de data inválido")
                txtDataNasc.Focus()

            ElseIf txtValidade.Text.Equals(String.Empty) Then
                erro.SetError(txtValidade, "Campo obrigatório")
                txtValidade.Focus()

            ElseIf Not IsDate(txtValidade.Text) Then
                erro.SetError(txtValidade, "Formato de data inválido")
                txtValidade.Focus()


            ElseIf txtPrimeira.Text.Equals(String.Empty) Then
                erro.SetError(txtPrimeira, "Campo obrigatório")
                txtPrimeira.Focus()

            ElseIf Not IsDate(txtPrimeira.Text) Then
                erro.SetError(txtPrimeira, "Formato de data inválido")
                txtPrimeira.Focus()

            ElseIf txtDataEmissao.Text.Equals(String.Empty) Then
                erro.SetError(txtDataEmissao, "Campo obrigatório")
                txtDataEmissao.Focus()

            ElseIf Not IsDate(txtDataEmissao.Text) Then
                erro.SetError(txtDataEmissao, "Formato de data inválido")
                txtDataEmissao.Focus()
            ElseIf validaDatasCNH() Then

                ok = True
            End If
        Catch ex As Exception
            generica.gravaErro(ex)
        End Try
        Return ok

    End Function

    Private Function validaDatasCNH() As Boolean
        Dim ok As Boolean = False

        Try
            Dim dataNascimento As DateTime
            Dim dataEmissao As DateTime
            Dim dataPrimeira As DateTime
            Dim dataValidade As DateTime

            If Not txtDataNasc.Text.Equals(String.Empty) Then
                dataNascimento = CType(txtDataNasc.Text, DateTime)
            End If

            If Not txtDataEmissao.Text.Equals(String.Empty) Then
                dataEmissao = CType(txtDataEmissao.Text, DateTime)
            End If

            If Not txtPrimeira.Text.Equals(String.Empty) Then
                dataPrimeira = CType(txtPrimeira.Text, DateTime)
            End If

            If Not txtValidade.Text.Equals(String.Empty) Then
                dataValidade = CType(txtValidade.Text, DateTime)
            End If

            If dataNascimento > dataEmissao Or dataNascimento > dataPrimeira Or dataNascimento > dataValidade Then
                erro.SetError(txtDataNasc, "Combinação dos valores das datas impossível")
                txtDataNasc.Focus()
                Return False
            ElseIf dataPrimeira < dataNascimento Or dataPrimeira > dataEmissao Or dataPrimeira > dataValidade Then
                erro.SetError(txtPrimeira, "Combinação dos valores das datas impossível")
                txtDataNasc.Focus()
                Return False
            ElseIf dataEmissao < dataNascimento Or dataEmissao < dataPrimeira Or dataEmissao > dataValidade Then
                erro.SetError(txtDataEmissao, "Combinação dos valores das datas impossível")
                txtDataNasc.Focus()
                Return False
            ElseIf dataValidade < dataNascimento Or dataValidade < dataPrimeira Or dataValidade < dataEmissao Then
                erro.SetError(txtValidade, "Combinação dos valores das datas impossível")
                txtDataNasc.Focus()
                Return False
            Else
                ok = True
            End If

        Catch ex As Exception
            generica.gravaErro(ex)
        End Try

        Return ok
    End Function

    Private Sub chamaEventoVisualizaWord(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ucPreambulo.onClickVisualizaWord
        Try
            If registroGlobal.registroPincipal.NUM_REGISTRO > 0 And registroGlobal.registroPincipal.GEROULAUDO Then
                generica.visualizaWord("", "", registroGlobal.registroPincipal.NOME_DIRETORIO)
            Else
                generica.visualizaWord(nomeDiretorio, nomeDiretorio & ".doc")
            End If
        Catch ex As Exception
            generica.gravaErro(ex)
        End Try
    End Sub
    Private Sub limpaCNH(ByVal grupo As GroupBox)
        Try
            For Each ctrl In grupo.Controls
                If TypeOf (ctrl) Is TextBox Then
                    CType(ctrl, TextBox).Text = String.Empty
                ElseIf TypeOf (ctrl) Is ComboBox Then
                    CType(ctrl, ComboBox).SelectedIndex = 0
                ElseIf TypeOf (ctrl) Is MaskedTextBox Then
                    CType(ctrl, MaskedTextBox).Text = String.Empty
                End If
                erro.SetError(ctrl, String.Empty)
            Next
        Catch ex As Exception
            generica.gravaErro(ex)
        End Try
    End Sub
    Private Sub chamaEventoNovoLaudo(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ucPreambulo.onClickNovoLaudo
        Try
            ucPreambulo.limparCampos()
            limpaCNH(grpDrogas)
            ucPreambulo.populaDados()
            habilita(True, False, False, True, True)
        Catch ex As Exception
            generica.gravaErro(ex)
        End Try
    End Sub


    Public Sub chamaEventoBuscaLaudo(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ucPreambulo.onClickBuscaLaudo
        Try

            ucPreambulo.getIdNatureza = ucPreambulo.ID_NATUREZA


            limpaCNH(grpDrogas)

            ucPreambulo.buscaDadosLaudo(ucPreambulo, Me.MdiParent)
            If registroGlobal.registroPincipal.ID_REGISTRO > 0 And registroGlobal.registroPincipal.GEROULAUDO Then

                habilita(False, , True, True)
            Else
                habilita(True, False, False, True, True)
            End If
        Catch ex As Exception
            generica.gravaErro(ex)
        End Try
    End Sub


    Private Sub txtImpresso_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs)
        If Not (Char.IsNumber(e.KeyChar) Or e.KeyChar.Equals(Sep) Or Char.IsControl(e.KeyChar)) Then e.Handled = True
    End Sub

    Private Sub txtRegistro_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs)
        If Not (Char.IsNumber(e.KeyChar) Or e.KeyChar.Equals(Sep) Or Char.IsControl(e.KeyChar)) Then e.Handled = True
    End Sub

    Private Sub txtPortador_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
        If txtPortador.Text.Equals(String.Empty) Then

            erro.SetError(txtPortador, "Campo obrigatário")
            txtPortador.Focus()
        Else
            erro.SetError(txtPortador, "")
        End If
    End Sub
    Private Sub txtImpresso_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
        If txtImpresso.Text.Equals(String.Empty) Then
            erro.SetError(txtImpresso, "Campo obrigatário")
            txtPortador.Focus()
        Else
            erro.SetError(txtImpresso, "")
        End If
    End Sub
    Private Sub txtRegistro_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
        If txtRegistro.Text.Equals(String.Empty) Then
            erro.SetError(txtRegistro, "Campo obrigatário")
            txtPortador.Focus()
        Else
            erro.SetError(txtRegistro, "")
        End If
    End Sub

    Private Sub txtDataNasc_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
        If txtDataNasc.Text.Equals(String.Empty) Then
            erro.SetError(txtDataNasc, "Campo obrigatário")
            txtDataNasc.Focus()
        Else
            erro.SetError(txtDataNasc, "")
        End If
    End Sub

    Private Sub txtValidade_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
        If txtValidade.Text.Equals(String.Empty) Then
            erro.SetError(txtValidade, "Campo obrigatário")
            txtValidade.Focus()
        Else
            erro.SetError(txtValidade, "")
        End If
    End Sub

    Private Sub txtPrimeira_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
        If txtPrimeira.Text.Equals(String.Empty) Then
            erro.SetError(txtPrimeira, "Campo obrigatário")
            txtPrimeira.Focus()
        Else
            erro.SetError(txtPrimeira, "")
        End If
    End Sub


    Private Sub txtDataEmissao_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
        If txtDataEmissao.Text.Equals(String.Empty) Then
            erro.SetError(txtDataEmissao, "Campo obrigatário")
            txtDataEmissao.Focus()
        Else
            erro.SetError(txtDataEmissao, "")
        End If
    End Sub

    Private Sub cmbDetran_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs)
        e.Handled = True
    End Sub
    Private Sub cmbCategoria_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs)
        e.Handled = True
    End Sub
    Private Sub cmbGrafica_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs)
        e.Handled = True
    End Sub
    Private Sub txtDataNasc_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs)
        If txtDataNasc.Text.Length = 10 Then
            txtValidade.Focus()
        End If
    End Sub

    Private Sub txtValidade_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs)
        If txtValidade.Text.Length = 10 Then
            txtPrimeira.Focus()
        End If
    End Sub
    Private Sub txtPrimeira_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs)
        If txtPrimeira.Text.Length = 10 Then
            txtDataEmissao.Focus()
        End If
    End Sub
    Private Sub txtImpresso_KeyPress1(sender As Object, e As KeyPressEventArgs) Handles txtImpresso.KeyPress
        If Not (Char.IsNumber(e.KeyChar) Or e.KeyChar.Equals(Sep) Or Char.IsControl(e.KeyChar)) Then e.Handled = True
    End Sub

    Private Sub txtRegistro_KeyPress1(sender As Object, e As KeyPressEventArgs) Handles txtRegistro.KeyPress
        If Not (Char.IsNumber(e.KeyChar) Or e.KeyChar.Equals(Sep) Or Char.IsControl(e.KeyChar)) Then e.Handled = True
    End Sub

    Private Sub txtDataNasc_KeyUp1(sender As Object, e As KeyEventArgs) Handles txtDataNasc.KeyUp
        If txtDataNasc.Text.Length = 10 Then
            txtValidade.Focus()
        End If

    End Sub

    Private Sub txtValidade_KeyUp1(sender As Object, e As KeyEventArgs) Handles txtValidade.KeyUp
        If txtValidade.Text.Length = 10 Then
            txtPrimeira.Focus()
        End If

    End Sub

    Private Sub txtPrimeira_KeyUp1(sender As Object, e As KeyEventArgs) Handles txtPrimeira.KeyUp
        If txtPrimeira.Text.Length = 10 Then
            txtDataEmissao.Focus()
        End If

    End Sub

End Class